package constant

// 枚举类型定义
type Gender string

func (g Gender) Value() string {
	return string(g)
}

func (g Gender) Negation() Gender {
	switch g {
	case Male:
		return Female
	case Female:
		return Male
	default:
		return ""
	}
}

const (
	Male   Gender = "男"
	Female Gender = "女"
)

type MaritalStatus string // "未婚"、"离异"、"丧偶"

func (m MaritalStatus) Value() string {
	return string(m)
}

const (
	Single   MaritalStatus = "未婚"
	Divorced MaritalStatus = "离异"
	Widowed  MaritalStatus = "丧偶"
)

type AssetStatus string

func (a AssetStatus) Value() string {
	return string(a)
}

const (
	FullPayment AssetStatus = "全款"
	Mortgage    AssetStatus = "按揭"

	FullPaymentHouse AssetStatus = "城区全款房"
	MortgageHouse    AssetStatus = "城区按揭房"
	LocalHouse       AssetStatus = "乡镇房"

	None       AssetStatus = "无"
	BuyAnyTime AssetStatus = "随时买"
)

// 资产信息子结构
type AssetInfo struct {
	AnnualIncome float64     `json:"annualIncome" bson:"annual_income"` // 年收入， 单元: 万元
	Car          AssetStatus `json:"car"           bson:"car"`          // 车子状态，全款，按揭，无，随时买
	House        AssetStatus `json:"house"         bson:"house"`        // 房子状态
}

type RelationshipStatus string

func (r RelationshipStatus) Value() string {
	return string(r)
}

const (
	UnKnown  RelationshipStatus = "未知"
	Waiting  RelationshipStatus = "等待分配"
	Matching RelationshipStatus = "匹配中"
	InLove   RelationshipStatus = "恋爱中"
	Married  RelationshipStatus = "已结婚"
	DropOut  RelationshipStatus = "不参与，资料下掉"
)

// 年龄范围子结构
type AgeRange struct {
	Min int
	Max int
}
